import type {Command} from "@/types/terminal";
import {trojanCommand} from "./trojan";
import {easterCommands} from "./easter";
import {suspectsCommand} from "./suspects";
import {
    saveCommand,
    loadCommand,
    deleteSaveCommand
} from "./save"

import {
    helpCommand,
    lsCommand,
    cdCommand,
    catCommand,
    clearCommand,
    unlockCommand,
    decodeCommand,
    scanCommand,
    repairCommand,
    pingCommand,
    connectCommand,
    downloadCommand,
    psCommand,
    topCommand,
    analyzeCommand,
    killCommand,
    restoreCommand,
    whoamiCommand,
    sudoCommand,
    chmodCommand,
    tcpdumpCommand,
    wiresharkCommand,
    iptablesCommand,
    mailListCommand,
    chatCommand,
    privateCommand,
    historyCommand,
    exitCommand,
    loganalyzerCommand,
    timelineCommand,
    traceCommand,
    memdumpCommand,
    stringsCommand,
    volatilityCommand,
    levelCommand,
    netstatCommand,
    hintCommand,
    remoteCommand,
    ssh_exploitCommand,
    gotoCommand,
    personnelCommand,
    viewCommand,
    verifyCommand,
    suspectCommand,
    voiceprintCommand,
    fingerprintCommand,
    trackCommand,
    cctvCommand
} from "./basic";

export const commands: { [key: string]: Command } = {
    help: helpCommand,
    ls: lsCommand,
    cd: cdCommand,
    cat: catCommand,
    clear: clearCommand,
    unlock: unlockCommand,
    decode: decodeCommand,
    save: saveCommand,
    load: loadCommand,
    deletesave: deleteSaveCommand,
    scan: scanCommand,
    repair: repairCommand,
    ping: pingCommand,
    connect: connectCommand,
    download: downloadCommand,
    ps: psCommand,
    top: topCommand,
    analyze: analyzeCommand,
    kill: killCommand,
    restore: restoreCommand,
    whoami: whoamiCommand,
    sudo: sudoCommand,
    chmod: chmodCommand,
    tcpdump: tcpdumpCommand,
    wireshark: wiresharkCommand,
    iptables: iptablesCommand,
    mail: mailListCommand,
    chat: chatCommand,
    private: privateCommand,
    history: historyCommand,
    exit: exitCommand,
    loganalyzer: loganalyzerCommand,
    timeline: timelineCommand,
    trace: traceCommand,
    memdump: memdumpCommand,
    strings: stringsCommand,
    volatility: volatilityCommand,
    level: levelCommand,
    netstat: netstatCommand,
    hint: hintCommand,
    remote: remoteCommand,
    ssh_exploit: ssh_exploitCommand,
    trojan: trojanCommand,
    goto: gotoCommand,
    personnel: personnelCommand,
    view: viewCommand,
    verify: verifyCommand,
    suspect: suspectCommand,
    voiceprint: voiceprintCommand,
    fingerprint: fingerprintCommand,
    suspects: suspectsCommand,
    track: trackCommand,
    cctv: cctvCommand,
    ...easterCommands
};

export const getCommands = () => {
    return commands;
};